#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QPushButton>
#include <QMediaPlayer>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

enum PLAYMODE{
    ORDER_MODE,
    RANDOM_MODE,
    CIRCLE_MODE
};
class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
public slots:
    //处理播放或暂停
    void handlePlaySlot();

    //播放模式
    void handlePlayModeSlot();

    //处理上一首
    void handlePrevSlot();

    //处理下一首
    void handleNextSlot();

    //处理音乐位置变化
    void handlePositionChangedSlot(qint64 position);
    //处理音乐位置变化
    void handleDurationSlot(qint64 duration);

    //处理音乐列表按钮对应的槽函数
    void handlePlayListSlot();

private:
    //设置按钮样式
    void setButtonStyle(QPushButton* btn, const QString& filename);

    //设置背景图片
    void setBackGround(const QString& filename);

    //初始化按钮
    void initButtons();

    //初始化音乐播放器
    void initMediaPlayer();

    //加载指定文件夹
    void loadLocalMusicDir(const QString& dir);

    //播放音乐
    void startPlayMusic();

    //通过时间戳获取mm::ss字符串
    QString getTimeStr(qint64 timestamp);

    //显示动画
    void showAnimation(QWidget* window);

    //隐藏动画
    void hideAnimation(QWidget* window);

private:
    Ui::MainWindow *ui;

    QMediaPlayer* m_player;   //音乐播放器

    QString m_musicDir;

    //当前播放模式
    PLAYMODE m_curPlayMode{ORDER_MODE};

    bool m_isShowFlag{false};    //是否展示音乐列表标志位
};
#endif // MAINWINDOW_H
